home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / man / cmds.fmt / fscheck.man < prev    next >
Text File  |  1990-03-19  |  18KB  |  465 lines

  1.  
  2.  
  3.  
  4. FSCHECK                   User Commands                   FSCHECK
  5.  
  6.  
  7.  
  8. _________________________________________________________________
  9.  
  10. NNAAMMEE
  11.      fscheck - perform consistency check on file system
  12.  
  13. SSYYNNOOPPSSIISS
  14.      ffsscchheecckk --ddeevv _d_e_v_i_c_e --ppaarrtt _p_a_r_t_i_t_i_o_n [[_o_p_t_i_o_n_s]
  15.  
  16. OOPPTTIIOONNSS
  17.      --ddeevv _d_e_v_i_c_e   _D_e_v_i_c_e is the root  name  of  a  device,  i.e.
  18.                    rxy0, rsd1, rsb0
  19.  
  20.      --ppaarrtt _p_a_r_t_i_t_i_o_n
  21.                    _P_a_r_t_i_t_i_o_n is a letter indicating a  partition,
  22.                    i.e. a, b, c, d, e, f, g.
  23.  
  24.      --ddiirr _d_e_v_D_i_r   _D_e_v_D_i_r is an alternate directory in  which  to
  25.                    find  the  device  file named by concatenating
  26.                    _D_e_v_i_c_e and _P_a_r_t_i_t_i_o_n.  The  default  directory
  27.                    name is ``/dev/``.
  28.  
  29.      --iinniittiiaallPPaarrtt _f_i_r_s_t_P_a_r_t_N_a_m_e
  30.                    _f_i_r_s_t_P_a_r_t_N_a_m_e is the name of the initial  par-
  31.                    tition  on  the disk which contains basic disk
  32.                    geometry information.  The default  is  parti-
  33.                    tion ``a''.
  34.  
  35.      --wwrriittee        Write the disk when errors are encountered and
  36.                    fixed.  The default is to not write the disk.
  37.  
  38.      --ssiilleenntt       Don't say anything unless there is an error.
  39.  
  40.      --vveerrbboossee      Output verbose information about errors.   The
  41.                    default is to print out terse information.
  42.  
  43.      --iinnccVVeerrssiioonn   If the domain was not written back properly on
  44.                    system  shutdown then all version numbers will
  45.                    be incremented.
  46.  
  47.      --ffiixxRRoooott      Re-create a missing or corrupted  root  direc-
  48.                    tory.
  49.  
  50.      --cclleeaarr        Clear the domain number field  stored  in  the
  51.                    summary sector.
  52.  
  53.      --hhoossttIIDD _i_d    Update the host ID in the disk header.  If  _i_d
  54.                    is not 0 then it is used as the host id to put
  55.                    in the header. If _i_d equals 0 then one of  two
  56.                    values are used as the host id.  If the device
  57.                    server is the local  host  then  the  kernel's
  58.                    internal  idea  of its host id is used, other-
  59.                    wise the device server's id is used.
  60.  
  61.  
  62.  
  63. Sprite v.1.0        Printed:  March 19, 1990                    1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. FSCHECK                   User Commands                   FSCHECK
  71.  
  72.  
  73.  
  74.      --bbaaddBBlloocckk     Initialize the bad block file descriptor.
  75.  
  76.      --oouuttppuuttFFiillee _o_u_t_p_u_t_F_i_l_e
  77.                    All  output  to  stdout  and  stderr  is  also
  78.                    appended to _o_u_t_p_u_t_F_i_l_e.
  79.  
  80.      --bbuuffffeerrSSiizzee _s_i_z_e
  81.                    Set the size of  the  buffer  associated  with
  82.                    _o_u_t_p_u_t_F_i_l_e  to  _s_i_z_e bytes.  Default is to use
  83.                    whatever  buffer  is  provided  by  the  stdio
  84.                    library.   This  option  has  no effect if the
  85.                    --oouuttppuuttFFiillee option is not used.
  86.  
  87.      --rroooottPPaarrtt     This option controls the output to a file.  If
  88.                    the  --oouuttppuuttFFiillee option is not given then this
  89.                    option has no effect. Otherwise, the output is
  90.                    stored  in  a  buffer  and only written to the
  91.                    file when the program exits.  This allows  the
  92.                    output  to  be written to a file on the parti-
  93.                    tion being  checked  (usually  the  output  is
  94.                    written  to  the root partition).  The file IO
  95.                    in this case is very  primative  and  restric-
  96.                    tive.  The  output  file  must  be in the root
  97.                    directory and  must  exist  prior  to  running
  98.                    ffsscchheecckk.   If  the  size of the output exceeds
  99.                    the size of the file or if it exceeds the size
  100.                    of  the  direct  data  blocks  then it will be
  101.                    truncated. If the output exceeds the  size  of
  102.                    the  internal buffer it will be truncated (see
  103.                    --bbuuffffeerrSSiizzee ).  If the output is smaller  than
  104.                    the  size  of  the file, the remaining part of
  105.                    the file will be filled with null  characters.
  106.                    Any  file  produced by this option will have a
  107.                    decimal  number  in  the  first   line   which
  108.                    represents  the  number  of bytes in the file.
  109.                    This is  used  by  ffsscchheecckk  to  calculate  the
  110.                    starting point for appending.  The output file
  111.                    can be  reset  by  either  setting  the  first
  112.                    number  to  0  or by overwriting the file with
  113.                    null characters.
  114.  
  115.      --hheeaappLLiimmiitt _s_i_z_e
  116.                    Program will not allocate more than _s_i_z_e bytes
  117.                    of  memory.  Default is to allocate as much as
  118.                    is needed.
  119.  
  120.      --ddeelleettee       If a data block is shared  by  more  than  one
  121.                    file, delete it from all but one of the files.
  122.                    The default is to make a copy of the block for
  123.                    each file sharing the original.
  124.  
  125.      --rreeaaddBBlloocckk _c_o_u_n_t
  126.  
  127.  
  128.  
  129. Sprite v.1.0        Printed:  March 19, 1990                    2
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. FSCHECK                   User Commands                   FSCHECK
  137.  
  138.  
  139.  
  140.                    Read count blocks at a time when  reading  the
  141.                    file descriptors. Currently this does not pro-
  142.                    vide better performance due to limitations  in
  143.                    the disk interface library.
  144.  
  145.      --ddeebbuugg        Print out debugging information.
  146.  
  147.      --bbiittmmaappVVeerrbboossee
  148.                    Print out lots and lots of  information  about
  149.                    errors in the bitmaps.
  150.  
  151.      --nnuummRReebboooott _c_o_u_n_t
  152.                    Number of consecutive times to  reboot  before
  153.                    returning a warning indication.
  154.  
  155.      --cclleeaarrFFiixxCCoouunntt
  156.                    Clear consecutive fix counter.
  157.  
  158. _________________________________________________________________
  159.  
  160.  
  161. DDEESSCCRRIIPPTTIIOONN
  162.      This program will perform a consistency check on a file sys-
  163.      tem.   By  default  it will report inconsistencies but won't
  164.      repair them.  If the --wwrriittee option  is  used  then  it  will
  165.      repair  any  inconsistencies by modifying the disk as neces-
  166.      sary.
  167.  
  168.      This program performs the following consistency checks:
  169.  
  170.      1.   It makes sure that the file descriptor  allocation  bit
  171.           map  agrees  with  the  status information kept in each
  172.           file descriptor.  If necessary it will correct the  bit
  173.           map.
  174.  
  175.      2.   It confirms that data-block and indirect-block pointers
  176.           are valid.  If a pointer is invalid then the pointer is
  177.           set to NIL and the file size is adjusted  as  necessary
  178.           to reflect the new size of the file.
  179.  
  180.      3.   It recreates the data block allocation bit map based on
  181.           information   in  the  file  descriptors  and  indirect
  182.           blocks.
  183.  
  184.      4.   It checks for blocks that are allocated  to  more  than
  185.           one  file. If a block is multiply allocated then copies
  186.           of the block are made and all but one of the  files  is
  187.           corrected  to  use  a  copy.   If the --ddeelleettee option is
  188.           given, or if only a subset of the fragments in a  block
  189.           are  shared, then the block is given to the lowest num-
  190.           bered file descriptor and it is removed from all  other
  191.           files  that  reference  it.   A special case is made of
  192.           block 0. This block belongs to the root  directory  and
  193.           is  copied (or deleted) for all other files even if the
  194.  
  195.  
  196.  
  197. Sprite v.1.0        Printed:  March 19, 1990                    3
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204. FSCHECK                   User Commands                   FSCHECK
  205.  
  206.  
  207.  
  208.           root directory is corrupted or doesn't exist.
  209.  
  210.      5.   It verifies that directories are of the proper  format.
  211.           In  order  to  patch a directory, names may be deleted,
  212.           the directory may be truncated, or in  the  worst  case
  213.           the directory may be turned into a normal file.
  214.  
  215.      6.   It puts unreferenced files into the  lost+found  direc-
  216.           tory.   The  name of each file in the lost+found direc-
  217.           tory is the file's file descriptor number.
  218.  
  219.      7.   It corrects link counts and block counts in  each  file
  220.           descriptor.
  221.  
  222.      8.   It checks that indirect blocks contain valid  pointers.
  223.           If  the pointers are invalid and the block is part of a
  224.           file then a hole is created, otherwise if the block  is
  225.           part of a directory then the directory is truncated.
  226.  
  227.      9.   It checks that each file descriptor  contains  a  valid
  228.           magic  number.  If  this  is not the case then the file
  229.           descriptor is cleared and marked as unused in the  bit-
  230.           map.
  231.  
  232.      10.  It recreates the root directory if it is corrupted  and
  233.           the --ffiixxRRoooott option is given.
  234.  
  235.      By default only terse information is given about the  errors
  236.      in  the  file  system.   Only  the  first  error per file is
  237.      reported.  If the --vveerrbboossee option is given then more verbose
  238.      information  will be given.  If the --bbiittmmaappVVeerrbboossee option is
  239.      given then differences between the bitmaps on disk  and  the
  240.      recreated bitmaps are printed. Since the bitmaps on disk are
  241.      not kept current use of this option  is  likely  to  produce
  242.      lots of output.
  243.  
  244.      The ffsscchheecckk program will also perform other actions  depend-
  245.      ing  on  the options that are specified.  If the --iinnccVVeerrssiioonn
  246.      option is given then flags in the  file  system  header  are
  247.      checked  to  see  if the file system was safely written back
  248.      when it was detached or the system  went  down.   If  it  is
  249.      determined  that the file system was not safely written back
  250.      then the version numbers for all files in  the  file  system
  251.      are  incremented.   This  will  cause  all  reopens of files
  252.      because of recovery to fail.
  253.  
  254.      If the --ffiixxRRoooott option is given the root directory  will  be
  255.      recreated  if  it  has  become  corrupted.   If  the root is
  256.      recreated, then any directories that have the root directory
  257.      as  their  parent  will be inserted into the root with their
  258.      file descriptor number as their name.  Any files  that  used
  259.      to  be  in  the root directory will be placed in lost+found.
  260.  
  261.  
  262.  
  263. Sprite v.1.0        Printed:  March 19, 1990                    4
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270. FSCHECK                   User Commands                   FSCHECK
  271.  
  272.  
  273.  
  274.      FFsscchheecckk assumes that data block 0 belongs to the root direc-
  275.      tory  and  will  allocate  this  block to the directory when
  276.      reconstructing it.  The --ffiixxRRoooott option requires reading the
  277.      root  directory  twice,  hence it cannot be used without the
  278.      --wwrriittee option.
  279.  
  280.      The --cclleeaarr option should be used if the domain number  field
  281.      should be cleared from the summary sector.  Each file system
  282.      that is attached is given a domain number under which it can
  283.      be  identified.   When a file system is attached, the system
  284.      will try to attach it with the same domain  number  that  it
  285.      was  attached  under  last  time.  This is required to allow
  286.      clients of the file system to recover when the  file  system
  287.      is  reattached.   If the domain number field is cleared from
  288.      the summary sector, then the system  will  attach  the  file
  289.      system under a domain number of the system's choosing.
  290.  
  291.      The --hhoossttIIDD option will force the system to update the  host
  292.      id in the file system header.  If the device under which the
  293.      file system is being attached is generic then the id of  the
  294.      host on which ffsscchheecckk is run is used.  Otherwise the host id
  295.      specified by the device file is used.  The default is not to
  296.      modify the host id.
  297.  
  298.      The --bbaaddBBlloocckk option will  initialize  the  file  descriptor
  299.      which points to bad disk blocks.  Initializing it will clear
  300.      out any pointers to bad blocks that  are  currently  in  the
  301.      file descriptor.
  302.  
  303.      The --hheeaappLLiimmiitt option can be used to place an upper limit on
  304.      the  size  of  the program heap. This can be used to prevent
  305.      paging, since paging cannot be done at the point in the boot
  306.      sequence  when  ffsscchheecckk  is run.  If ffsscchheecckk cannot complete
  307.      checking the disk because of the limit then it  will  do  as
  308.      much  as  it can. This should allow multiple runs of ffsscchheecckk
  309.      to completely check the disk.  The limit is only an approxi-
  310.      mation  of  how  large  ffsscchheecckk will grow, since the program
  311.      stack is not restricted. Therefore the limit should  be  set
  312.      as high as possible but it should not be set to the boundary
  313.      at which paging will occur. If it  is  set  too  small  then
  314.      ffsscchheecckk may not be able to run at all. Note that the bbuuffffeerr--
  315.      SSiizzee and rreeaaddBBlloocckk options will affect the  amount  of  heap
  316.      required.   As  a  rule  of  thumb, the amount of heap space
  317.      needed by ffsscchheecckk is proportional to the disk size  and  the
  318.      amount of errors on the disk. A heap limit of 1 Mb should be
  319.      sufficient for all but the most extreme cases.
  320.  
  321.      Each time ffsscchheecckk runs and finds an error in a partition,  a
  322.      counter on disk is incremented. The value of this counter is
  323.      the number of consecutive times ffsscchheecckk has run on the  par-
  324.      tition  and  corrected  an error. If the counter exceeds the
  325.      value given by the --nnuummRReebboooott  option  (default  4)  and  if
  326.  
  327.  
  328.  
  329. Sprite v.1.0        Printed:  March 19, 1990                    5
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336. FSCHECK                   User Commands                   FSCHECK
  337.  
  338.  
  339.  
  340.      ffsscchheecckk   corrects   an  error,  then  ffsscchheecckk  will  return
  341.      EXIT_NOREBOOT instead of the standard soft error indication.
  342.      This  allows  higher level software to avoid infinite reboot
  343.      loops.
  344.  
  345.      The --cclleeaarrFFiixxCCoouunntt option resets the consecutive counter  to
  346.      0.
  347.  
  348.      Finally, the --oouuttppuutt, --bbuuffffeerrSSiizzee and --nnooFFlluusshh options  con-
  349.      trol  the output from fscheck. The --oouuttppuutt option allows the
  350.      output from fscheck to be put into a file as well as printed
  351.      on  stdout and stderr.  The --bbuuffffeerrSSiizzee option sets the size
  352.      of the IO buffer  associated  with  the  output  file.   The
  353.      --nnooFFlluusshh option prevents the buffer from being flushed until
  354.      the disk has been checked and  corrected.  This  allows  the
  355.      output to be written to the disk being checked.  If the out-
  356.      put exceeds the size of the buffer then it is  truncated  to
  357.      the buffer size.  If the buffer size is exceeded in the mid-
  358.      dle of an output string, then remainder of the  string  will
  359.      wrap over the beginning of the buffer.
  360.  
  361. EEXXIITT CCOODDEESS
  362.      FFsscchheecckk has a large number of exit  codes.  Positive  values
  363.      indicate  that  some  sort  of  error occurred that requires
  364.      ffsscchheecckk be run again, although an exit code of  1  indicates
  365.      that  the  filesystem  was  corrupted  but  was successfully
  366.      corrected.  Negative error codes  indicate  that  a  serious
  367.      error  occurred that requires user action before fscheck can
  368.      be run again.
  369.  
  370.      0    No errors occurred and no  errors  were  fixed  in  the
  371.           filesystem.
  372.  
  373.      1    Errors were fixed in the filesystem.
  374.  
  375.      2    FFsscchheecckk ran out of memory before it was  able  to  com-
  376.           pletely  check  the  disk. Rerunning with the same heap
  377.           limit should allow ffsscchheecckk to finish.
  378.  
  379.      3    Errors were fixed in the filesystem and the  number  of
  380.           consecutive  times  ffsscchheecckk  has  fixed  this partition
  381.           exceeds the limit.
  382.  
  383.      -1   An unspecified hard error occurred.
  384.  
  385.      -2   A disk read failed.
  386.  
  387.      -3   A disk write failed.
  388.  
  389.      -4   There was a problem with one of the arguments.
  390.  
  391.      -5   The heap limit is too small for  ffsscchheecckk  to  run.  The
  392.  
  393.  
  394.  
  395. Sprite v.1.0        Printed:  March 19, 1990                    6
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402. FSCHECK                   User Commands                   FSCHECK
  403.  
  404.  
  405.  
  406.           heap   limit  must  be  made  larger  before  rerunning
  407.           ffsscchheecckk.
  408.  
  409.      -6   The disk is full so that  duplicate  blocks  cannot  be
  410.           copied.  Either  delete  some  stuff or rerun using the
  411.           --ddeelleettee option.
  412.  
  413. BBUUGGSS//FFEEAATTUURREESS
  414.      Indirect blocks are always marked as in use in  the  bitmap,
  415.      even  if  they  contain invalid entries. This is because the
  416.      block may be in use by another file and cannot be marked  as
  417.      free.
  418.  
  419.      The --ffiixxRRoooott  option  cannot  be  used  without  the  --wwrriittee
  420.      option.
  421.  
  422. KKEEYYWWOORRDDSS
  423.      file system, disk
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461. Sprite v.1.0        Printed:  March 19, 1990                    7
  462.  
  463.  
  464.  
  465.